﻿/******************************************************************************
 * Name         : LoginConnectManager.hpp
 * Author       : 671643387
 * Date         : 2015年9月14日
 * Description  :
 *****************************************************************************/

#ifndef LOGIN_SERVER_MAIN_LOGINCONNECTMANGER_HPP_
#define LOGIN_SERVER_MAIN_LOGINCONNECTMANGER_HPP_

#include <dev/base/Thread.hpp>
#include <dev/net/TcpServer.hpp>

namespace sxr
{
	namespace login_server
	{
		class LoginConnectManager : public dev::base::Thread
		{
		public:
			LoginConnectManager(void);
			virtual ~LoginConnectManager(void);

			static LoginConnectManager* getMe(void);

		public:
			bool initialize(void);

			virtual void stop(void);
			virtual void run(void);

		private:
			void onConnectionEstablished(dev::net::TcpConnectionPtr& conn);
            /*
			void onMessage(dev::net::TcpConnection& conn, dev::net::TcpConnectionInputStream& is);
			void onConnectionError(dev::net::TcpConnection& conn);
			void onConnectionClosing(dev::net::TcpConnection& conn);
			void onConnectionHeartBeat(dev::net::TcpConnection& conn);
			void onConnectionWritable(dev::net::TcpConnection& conn);
            */

		private:
			void onServerShutdown(void);

		private:
			dev::net::EventLoop eventLoop_;
			dev::net::TcpServer tcpServer_;
		};
	}
}

#endif /* LOGIN_SERVER_MAIN_LOGINCONNECTMANGER_HPP_ */
